import 'package:flutter/material.dart';
import '../services/camera_service.dart'; // 导入摄像头服务
import '../services/tflite_service.dart'; // 导入TensorFlow Lite服务
import '../widgets/camera_preview.dart'; // 确保引用的自定义摄像头预览组件路径正确

// HomeScreen 类为应用的主界面，负责布局和初始化服务
class HomeScreen extends StatefulWidget {
  const HomeScreen({super.key});

  @override
  HomeScreenState createState() => HomeScreenState();
}

class HomeScreenState extends State<HomeScreen> {
  final CameraService _cameraService = CameraService(); // 创建摄像头服务实例
  final TFLiteService _tfliteService = TFLiteService(); // 创建TensorFlow Lite服务实例

  @override
  void initState() {
    super.initState();
    _initializeServices(); // 在widget初始化时，启动服务初始化
  }

  // 初始化服务
  Future<void> _initializeServices() async {
    await _cameraService.initializeCamera(); // 初始化摄像头服务
    await _tfliteService.loadModel(); // 加载TensorFlow Lite模型
    setState(() {}); // 初始化完成后，更新界面
  }

  @override
  void dispose() {
    _cameraService.dispose(); // 释放摄像头资源
    _tfliteService.dispose(); // 释放TFLite模型资源
    super.dispose(); // 调用父类的dispose方法清理
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Virtual Fitness Coach')), // 顶部应用条
      body: Column(
        children: <Widget>[
          // 使用Expanded使得CameraPreviewWidget能够填满剩余空间
          Expanded(
            child: _cameraService.controller != null &&
                    _cameraService.controller!.value.isInitialized
                ? CameraPreviewWidget(
                    cameraController: _cameraService
                        .controller) // 使用自定义的CameraPreviewWidget显示摄像头预览
                : const Center(
                    child: CircularProgressIndicator()), // 摄像头未初始化时显示加载圈
          ),
        ],
      ),
    );
  }
}
